home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 04 / 1 / DISK0416.ZIP / ROFF4.H < prev    next >
C/C++ Source or Header  |  1985-08-10  |  12KB  |  281 lines

  1. /********************************************************/
  2. /*                                                      */
  3. /*                  ROFF4, Version 1.60                 */
  4. /*                                                      */
  5. /*(C) 1983,4 by Ernest E. Bergmann                      */
  6. /*              Physics, Building #16                   */
  7. /*              Lehigh Univerisity                      */
  8. /*              Bethlehem, Pa. 18015                    */
  9. /*                                                      */
  10. /* Permission is hereby granted for all commercial and  */
  11. /* non-commercial reproduction and distribution of this */
  12. /* material provided this notice is included.           */
  13. /*                                                      */
  14. /********************************************************/
  15. /*FEB 19, 1984*/
  16. /*Jan 15, 1984*/
  17. #include "stdio.h"
  18. #include "ctype.h"
  19.  
  20. /* The following is require because putchar is a macro in Lattice C */
  21. /* However, this program use its putchar. Therefore undefine of     */
  22. /* putchar is required.                                             */
  23.  
  24. #undef putchar
  25.  
  26. /*June 27, 1983 eliminate directed input*/
  27.  
  28. /* Uncomment the line below if you want to use the option -b 
  29.    on command line.                                         */
  30. /* #define DEBUGON 1  */
  31.  
  32. #define MAXLINE 255
  33. #define TRUE 1
  34. #define FALSE 0
  35. #define ERROR (-1)
  36. #define OK 0
  37.  
  38. char _doflag;   /* flag if directed I/O being used */
  39. char  **_nullpos; /*???*/
  40. FILE *_dobuf,*IOBUF;           /* /O buffer used for direction  */
  41. char sav_out_file[20];  /*??? added to work with dioinit
  42.                                 and dioflush() ???*/
  43. int     debug;
  44. int PAGESTOP;
  45. int JUSTIFY;
  46. int FFEED;
  47. int FIRSTPAGE,LASTPAGE;/*for selectively printing output*/
  48. int SUPPRESS;/*if true,no output is passed by putchar()*/
  49.  
  50. #define STDERR          stderr
  51. /* send error messages to console while in DIO */
  52. #define STKSIZ          3
  53. #define DEBUG           ( debug != 0 )
  54. #define HUGE            135     /* generally large number */
  55. #define LSZ             255     /* line buffer size*/
  56. #define COMMAND         '.'     /* all commands starts with this */
  57. #define CONSOLE         -5      /* one of output options */
  58. #define PRINTER         -4      /* another */
  59. /* #define FILE           -3      * another *   */
  60. #define UNKNOWN         -1      /* returned if doesn't recg. command */
  61. #define NO_VAL          -32760  /* returned when no argument w/commad */
  62. #define WE_HAVE_A_WORD   1       /* returned by getwrd func. */
  63. #define NO              0
  64. #define YES             1
  65. #define UNDERLINE       '\137'
  66. #define CR              0x0D
  67. #define BACKSPACE       '\b'
  68. #define NUMSIGN         '#'     /* for title strings */
  69. #define NEWLINE         '\n'
  70. #define TAB             '\t'
  71. #define BLANK           ' '
  72. #define FORMF           0x0C    /* formfeed for printer */
  73. #define SQUOTE          0x27    /* single quote */
  74. #define DQUOTE          0x22    /* double quote */
  75. #define TRSIZ           2000    /*size of TRTBL*/
  76.  
  77. #define TRANSLATE 2     /* May 23, 1983*/
  78. #define BLACK 1
  79. #define WHITE 0
  80. #define CONTROL -1
  81. #define SENTINEL -2
  82. #define HTAB    -3
  83. #define OTHERS -4
  84. #define XCHAR '-'
  85. #define UCHAR '_'
  86.  
  87. #define FI              1       /* fill lines */
  88. #define TI              2       /* temporary indent */
  89. #define BP              3       /* begin page  */
  90. #define BR              4       /* causes break */
  91. #define CE              5       /* center line(s) */
  92. #define IN              7       /* left indent */
  93. #define LS              8       /* line spacing */
  94. #define NF              9       /* no fill */
  95. #define PL              10      /* set page length */
  96. #define RM              11      /* set right margin */
  97. #define SP              12      /* add blank line(s) */
  98. #define ST              13      /* stop(pause) at page start?*/
  99. #define FO              14      /* footer title */
  100. #define HE              15      /* header title */
  101. #define M1              16      /* top margin */
  102. #define M2              17      /* second top margin */
  103. #define M3              18      /* first bottom margin */
  104. #define M4              19      /* bottom-most margin       */
  105. #define IG              20      /* "ignore";comments,Nov 6,82*/
  106. #define NE              21      /* "need";Nov 7,82*/
  107. #define FF              22      /* "formfeed";Nov 10*/
  108. #define SC              23      /* "space character";Nov13*/
  109. #define OW              24      /* "output width";Nov 13*/
  110. #define TS              25      /* "tabsize";Nov 13*/
  111. #define EH              26      /* "even headers";Nov 14*/
  112. #define OH              27      /* "odd headers"*/
  113. #define EF              28      /* "even footers"*/
  114. #define OF              29      /* "odd footers"*/
  115. #define AB              30      /* "abort";Nov 15*/
  116. #define DB              31      /* "debug"*/
  117. #define TC              32      /* "translation flag char"*/
  118. #define TR              33      /* "def translation string"*/
  119. #define CF              34      /* Dec 4:control flag char*/
  120. #define IC              35      /* insert character */
  121. #define OU              36      /* output */
  122. #define JU              37      /* right justify?*/
  123. #define NJ              38      /* don't right justify*/
  124. #define WH              39      /* whole line spacing code*/
  125. #define FR              40      /* fractional spacing,code*/
  126. #define DS              41      /*define string*/
  127. #define DM              42      /*define macro*/
  128. #define EM              43      /*end macro*/
  129. #define RG              44      /*register variable*/
  130. #define DI              45      /*diversion*/
  131. #define ED              46      /*end diversion*/
  132. #define SO              47      /*"source", include*/
  133. #define PC              48      /*printer control definition*/
  134. #define SA              49      /*"say" inline msg to console*/
  135. #define BJ              50      /*break with rightjustification
  136.                                 of current line*/
  137. int FILL;       /* set to YES or NO */
  138. int _FILL[STKSIZ];      /*convert global value to a stack*/
  139. int LSVAL;      /* line spacing value -> default will be 1 */
  140. int _LSVAL[STKSIZ];
  141. int TIVAL;      /* temporary indent -> default  0 */
  142. int INVAL;      /* left indent -> default  0 */
  143. int _INVAL[STKSIZ+3];   /* larger stack size for indent 5th Mar,85 KKP */
  144. int RMVAL;      /* right margin -> default  PAGEWIDTH */
  145. int _RMVAL[STKSIZ];
  146. int CEVAL;      /* set equal to number of lines to be centered  */
  147. int TCVAL;      /*translation flag char*/
  148. int _TCVAL[STKSIZ];
  149.                 /* default is 0                                   */
  150. int SPVAL;      /* blank lines to be spaced down */
  151.  
  152. int CURPAG;     /* current output page number; init = 0 */
  153. int NEWPAG;     /* next output page number; init = 1 */
  154. int VLINENO;    /* virtual (intended) line advances on page,
  155.                         see vadv()*/
  156. int FVLINENO;   /* + line fraction */
  157. int PLINENO;    /* printer's actual line advances on page,
  158.                         see padv()*/
  159. int FPLINENO;   /* + line fraction */
  160. int PLVAL;      /* page length in lines */
  161. int _PLVAL[STKSIZ];
  162. int M1VAL;      /* margin before& including header in lines*/
  163. int _M1VAL[STKSIZ];
  164. int M2VAL;      /* margin after header in lines*/
  165. int _M2VAL[STKSIZ];
  166. int M3VAL;      /* margin after last text line in lines*/
  167. int _M3VAL[STKSIZ];
  168. int M4VAL;      /* bottom margin, including footer in lines*/
  169. int _M4VAL[STKSIZ];
  170. int BOTTOM;     /* end of text area in lines;start of M3+M4 */
  171. int SCVAL;      /* space character*/
  172. int _SCVAL[STKSIZ];
  173. int OWVAL;      /* output device width*/
  174. int _OWVAL[STKSIZ];
  175. int TABSIZ;     /* spacing of tabstops*/
  176. int _TABSIZ[STKSIZ];
  177. int SENTENCE;   /* Nov 20*/
  178. int CFVAL;      /*Dec 4:control flag character value*/
  179. int _CFVAL[STKSIZ];
  180. int ICVAL;      /*insert character*/
  181. int _ICVAL[STKSIZ];
  182.  
  183. char LINE[ LSZ ];       /*input line buffer, Nov 26*/
  184. char EHEAD[ LSZ ],*EH2,*EH3;    /* even header title */
  185. char OHEAD[ LSZ ],*OH2,*OH3;    /* odd header title */
  186. char EFOOT[ LSZ ],*EF2,*EF3;    /* even footer title */
  187. char OFOOT[ LSZ ],*OF2,*OF3;    /* even footer title */
  188.  
  189.  
  190. /* defaults for global parameters */
  191.  
  192. #define FI_DEF          1
  193. #define LS_DEF          1
  194. #define IN_DEF          10
  195. #define RM_DEF          70
  196. #define TI_DEF          0
  197. #define CE_DEF          1
  198. #define UL_DEF          -1
  199. #define M1_DEF          2
  200. #define M2_DEF          2
  201. #define M3_DEF          2
  202. #define M4_DEF          2
  203. #define PL_DEF          66
  204. #define FF_DEF          YES     /* .ff defaults to "on" */
  205. #define FF_INI          NO      /* initial setting*/
  206. #define SC_INI          BLANK
  207. #define OW_INI          80      /*initial output width*/
  208. #define TS_DEF          8       /*standard tabsize*/
  209. #define TC_DEF          '~'     /*translation flag default*/
  210. #define CF_DEF          '^'     /*Dec 4*/
  211. #define IC_DEF          '\\'
  212. #define CW_DEF          12      /* 12/120" */
  213. #define JU_INI          YES     /*right justification*/
  214. #define REGDEF          0       /*default for register var.*/
  215.                                 /*when .rg has no numeric arg*/
  216.  
  217. int DIR;        /* for "spreading" of lines    */
  218. int OUTWRDS;    /* no. words in OUTBUF; init = 0 */
  219. char OUTBUF[ LSZ ];     /*lines to be filled collected here */
  220. int OUTW;       /*current display width of OUTBUF*/
  221. int OUTPOS;     /* =strlen(OUTBUF) */
  222. int WTOP,LTOP,OUTTOP;   /*zero|negative;levels of subscripts*/
  223. int WBOT,LBOT,OUTBOT;   /*zero|positive;levels of subscripts*/
  224. int OLDLN;              /*position of previous main line*/
  225. int OLDBOT;             /*OUTBOT for previous line;reset
  226.                         each page*/
  227. int FRQ,FRVAL;  /* fractional line?, what fraction size*/
  228. char *FRSTRING; /* ^ to code for fractional spacing*/
  229. char *WHSTRING; /* ^ to code for whole line spacing*/
  230. char *CPTR[128-' '];    /*pointer table for print control*/
  231. char *TPTR[128-' '];    /*pointer table for translation strings
  232.                           for char; initialize to null */
  233. char TRTBL[TRSIZ];      /*holds translation strings*/
  234. char *TREND;            /*^to end of above;init = TRTBL*/
  235. int DLINK;              /*^ head of diversion list*/
  236. int *RLINK;             /*^ head of register variable list*/
  237. int *SLINK,*MLINK;      /* points to head of linked string, macro lists */
  238. /*following added for buffered and formatted output:  */
  239. char OUTBUF2[LSZ];      /*for line to be output in fancy fmt*/
  240. int BPOS,CP,PP;         /*buffer,column,printer positions*/
  241. char XBUF[LSZ];         /*strikout buffer*/
  242. int XF,XCOL;            /* " flag and column */
  243. char UBUF[LSZ];         /*underline buffer*/
  244. int UF,UCOL;            /* " flag and column */
  245. int FIRST;              /*flag for first pass*/
  246. char DBUF[LSZ];         /*double strike buffer*/
  247. int DPOS;
  248. int OCNT;
  249. int MCNT;
  250. int BLKCNT;
  251. int NEWXF,NEWUF,NEWMCNT; /* 3rd Mar,85 ; Conrad Kwok */
  252. char LASTCH;    /* 5th Mar,85  ;  Conrad Kwok */
  253.  
  254. #define REVSCROLL       FALSE
  255. #define CANBS           FALSE
  256.  
  257. #define BACKSIZE        LSZ
  258. char BACKBUF[BACKSIZE];
  259. int BINP;       /*position in above;init to 0*/
  260. #define BELL    '\007'
  261. char KEYBD;             /*boolean & prompt for keyboard input*/
  262. char KLINE[MAXLINE];    /*keyboard line input buffer*/
  263. char *KPTR;             /*pointer for above*/
  264.  
  265. struct divfd
  266.         {char *nm;      /*name*/
  267.         int cs;         /*character count*/
  268.         int ls;         /*line count*/
  269.         FILE *bf; /*to iobuf if open, FALSE otherwise*/
  270. };
  271.  
  272. #define FMAX            4       /* # of additional files open*/
  273. int     FPTR;
  274. FILE *FSTACK[FMAX];
  275. int     TFLAG;/*added for start(), complete()*/
  276. int XF2,UF2,MCNT2;
  277.  
  278.  
  279.  
  280.  
  281.